<html>
<head>
<title>Shapelib Release Notes</title>
<link href="maptools.css" rel="stylesheet" type="text/css">
</head>

<body>
<h1>Shapelib Release Notes</h1>

To get notification of new releases of Shapelib <i>subscribe</i> to
the project mailing list at https://lists.osgeo.org/pipermail/shapelib/.<p>

<b>Release 1.6.1</b>:
<ul>
<li>DBFIsValueNULL(): accept empty string as NULL Date (https://github.com/OSGeo/gdal/issues/10405)</li>
<li>DBFIsValueNULL(): Accept string containing of width times "0" as NULL Date</li>
<li>Only test for _WIN32 for Windows detection</li>
<li>Windows: Fix UTF8 hook functions</li>
<li>Various compiler warning fixes</li>
<li>contrib/csv2shp.c: fix resource leaks (#86)</li>
<li>Detect byte order at compile time</li>
<li>shapefil.h: various const-correctness improvements</li>
<li>shapefil.h: Remove SHPTreeRemoveShapeId not being implemented</li>
<li>shapefil.h: Fix API call of SHPSearchDiskTreeEx</li>
<li>Add API functions for read/write of date attributes: DBFReadDateAttribute/DBFWriteDateAttribute</li>
<li>DBFWriteAttribute/DBFWriteLogicalAttribute: no longer silently accpets invalid input, but returns false</li>
<li>DBFCloneEmpty: consider the SAHooks</li>
<li>Move endian defines to shapefil_private.h (#99)</li>
<li>Fix test execution by complete refactoring.</li>
<li>Add C++ unit testing (#113)</li>
<li>SBNOpenDiskTree(): make it work with node descriptors with non-increasing nBinStart
    Fixes https://github.com/OSGeo/shapelib/issues/106 / https://github.com/OSGeo/gdal/issues/9430
</li>
<li>sbnsearch.c: avoid potential integer overflows on corrupted files</li>
<li>dbfdump: dump date and logical fields</li>
<li>dbfinfo: print date and logical fields</li>
<li>dbfcat: various fixes</li>
<li>Fix -Werror=calloc-transposed-args with gcc 14</li>
<li>SHPOpenLL(): avoid GDAL specific error message when .shx is missing (#129)</li>
<li>CMake: generate pkg-config file (#135)</li>
<li>CMake: Fix install interface include dir (#134)</li>
<li>CMake: Make building executables optional with CMake (set BUILD_APPS to OFF) (#78)</li>
<li>CMake: Remove duplicated shapefil.h installation in include_dir/shapelib (#80)</li>
<li>CMake: Remove INSTALL_NAME_DIR from target (#49)</li>
<li>CMake: Fix contrib.cmake</li>
<li>CMake: (>= 3.21) Fix ctest paths for shared libs (MSVC and CygWin)</li>
<li>CMake: Add GoogleTestAdapter (GTA) Run Settings</li>
</ul>

<b>Release 1.6.0</b>:
<ul>
<li>shapefil.h: add SHAPELIB_VERSION_MAJOR/MINOR/MICRO, SHAPELIB_VERSION_NUMBER, and SHAPELIB_AT_LEAST macros</li>
<li>Compiler warning fixes and various code cleanups</li>
<li>SAHooks: add a void *pvUserData member. ABI change</li>
<li>SAHooks.FOpen and FClose callbacks: add a void *pvUserData parameter. API and ABI change</li>
<li>SAHooks.FWrite: make first parameter a const void*. API change</li>
<li>Distribute LICENSE-LGPL and LICENSE-MIT files instead of COPYING file. Do not distribute INSTALL file</li>
<li>Use standard integer data types</li>
<li>Changes to allow building with cmake -DCMAKE_UNITY_BUILD=ON</li>
<li>Polygon writing: avoid considering rings slightly overlapping as inner-outer rings of others (refs OSGeo/gdal#5315)</li>
<li>Polygon writing: consider rings at non-constant Z as outer rings (fixes OSGeo/gdal#5315)
  As noted in code comments, this is an approximation of more complicated
  tests we'd likely have to do, that would take into account real
  co-planar testing, to allow detecting inner rings of outer rings in an
  oblique plane.</li>
<li>shpopen.c: Communicate why the file size cannot be reached when appending features (OSGeo/gdal#4140)
  Clearly state why the file size cannot be reached. This is important in order
  to correctly inform the user and prevent him/her from looking for other reasons.
  Related to https://github.com/qgis/QGIS/issues/44202</li>
<li>SHPWriteObject(): prevent potential overflows on 64-bit platforms on huge geometries</li>
<li>SHPRestoreSHX: update SHX content length even if error occurred</li>
<li>In creation, uses w+b file opening mode instead of wb followed by r+b,
    to support network file systems having sequential write only and when
    using CPL_VSIL_USE_TEMP_FILE_FOR_RANDOM_WRITE=YES (fixes OSGeo/gdal#7801)</li>
<li>Fix adding features in a .dbf without columns (fixes qgis/qgis#51247)</li>
<li>Have matching SOVERSION for CMake and autotools</li>
<li>Code reformatting</li>
<li>Enable contrib/csv2shp build with MSVC</li>
<li>Build contributed utilities via CMake</li>
<li>Use the the standard BUILD_TESTING CMake variable</li>
<li>Remove double free() in contrib/shpsrt (CVE-2022-0699)</li>
<li>SHPRestoreSHX: fix for (64 bit) big endian</li>
<li>Add config-style support for find_package(shapefile)</li>
<li>Prevent no-op FSeeks writing dbf & shp records for network filesystem performance</li>
</ul>

<b>Release 1.5.0</b>:
<ul>
<li> Add FTDate entry in DBFFieldType
	(see <a href="https://github.com/OSGeo/gdal/pull/308">GDAL Pull request 308</a>)
<li> Remove PROJ.4 dependency and functionality, causing removal of
     SHPProject(), SHPSetProjection() and SHPFreeProjection() from contrib/shpgeo.h,
     and removal of the contrib shpproj utility.
<li> shpopen.c: avoid being dependent on correctness of file size field in .shp. Fixes
      <a href="https://lists.osgeo.org/pipermail/gdal-dev/2018-October/049218.html">https://lists.osgeo.org/pipermail/gdal-dev/2018-October/049218.html</a>
</ul>

<b>Release 1.4.1</b>:
<ul>
<li> Fix a regression regarding re-writing the last shape
        of a file (<a href="https://trac.osgeo.org/gdal/ticket/7031">GDAL #7031</a>)
</ul>

<b>Release 1.4.0</b>:
<ul>
<li> Old Makefile build replaced by autoconf/automake (by Sandro Mani)
<li> CMake build system added (by Alan W. Irwin)
<li> Added read support for ESRI .sbn spatial index
<li> Resynchronization with GDAL's Shapefile driver. Mostly cleanups.
     SHPObject and DBFInfo structures extended with new members
<li> Add DBFSetLastModifiedDate() to modify the update date in the .dbf
<li> Add SHPSetFastModeReadObject() to read faster (but shapes got that way
     share state in the handle, so only one shape at a time can be used)
<li> Add SHPRestoreSHX() to recreate a missing .shx from the .shp and
     SHPOpenLLEx().
<li> Write DBF end-of-file character 0x1A by default.
     This behaviour can be controlled with the DBFSetWriteEndOfFileChar()
     function.
</ul>

<b>Release 1.3.0</b>:
<ul>
<li> Major rework to us application provided hooks for file io, and error reporting (SAHooks).
<li> Added contrib/Shape_PointInPoly.cpp from Marko Podgorsek.
<li> Added shapelib tools documentation from Eduardo Patto Kanegae.
<li> Added dbf deletion support.
<li> Added DBFAddNativeFieldType().
<li> Added DBFDeleteField(), DBFReorderFields() and DBFAlterFields() to
rework DBF schema.
<li> likely a variety of other changes - it has been eight years since 1.2.10!
</ul>

<b>Release 1.2.10</b>: Added SHPRewindObject() function, and shprewind utility
program.  Added FTLogical, DBFReadLogicalAttribute() and
DBFWriteLogicalAttribute() (thanks to Olek Neyman). <p>

<b>Release 1.2.9</b>: Good support for reading and writing NULL fields
in .dbf files, good support for NULL shapes and addition of the
DBFGetFieldIndex() functions (all contributed by Jim Matthews).<p>

An upgraded shputils.c has been contributed by Bill Miller.  Daniel
Morissette contributed DBFGetNativeFieldType().  Better error checking
for disk errors in dbfopen.c.  Various other bug fixes and safety improvements.
<p>

<b>Release 1.2.8</b>: Added hacked libtool support (supplied by Jan)
and "rpm ready" install logic.<p>

<b>Release 1.2.7</b>: Fix record size (was 4 bytes too long).  Modify
SHPReadObject() to handle null shapes properly.  Use atof() instead of
sscanf().  Support .DBF as well as .dbf.<p>

<b>Release 1.2.6</b>: Now available under old MIT style license, or at the
users option, LGPL.  Added the contrib directory of stuff from Carl Anderson
and the shptree.c API for quadtree based spatial searches.<p>

<b>Release 1.2.5</b>: SHPOpen() now forcibly uses "rb" or "r+b" access string
to avoid common mistakes on Windows.  Also fixed a serious bug with .dbf
files with a 'F' field type.<p>

<b>Release 1.2.4</b>: DBFOpen() will now automatically translate a .shp
extension to .dbf for convenience.  SHPOpen() will try datasets with lower
and uppercase extension.  DBFAddField() now returns the field number,
not TRUE/FALSE.<p>

<b>Release 1.2.3</b>: Disable writing measures to multi-patches as ArcView
seems to puke on them (as reported by Monika Sester).  Add white space
trimming, and string/numeric attribute interchangability in DBF API
as suggested by Steve Lime.  Dbfdump was updated to include several
reporting options.<p>

<b>Release 1.2.2</b>: Added proper support for multipatch (reading and
writing) - this release just for testing purposes.<p>

<b>Release 1.2</b> is mostly a rewrite of the .shp/.shx access API to account
for ArcView 3.x 3D shapes, and to encapsulate the shapes in a structure.
Existing code using the shapefile library will require substantial changes
to use release 1.2.<p>

<b>Release V1.1</b> has been built on a number of platforms, and used by a
number of people successfully.  V1.1 is the first release with the xBase API
documentation.<p>


</body>
</html>
